home *** CD-ROM | disk | FTP | other *** search
/ The Programmer Disk / The Programmer Disk (Microforum).iso / xpro / c4 / pro20 / rast.h < prev    next >
C/C++ Source or Header  |  1990-05-31  |  2KB  |  86 lines

  1. /* rast.h - header file for Sun raster files
  2. */
  3.  
  4. #ifndef _RAST_H_
  5. #define _RAST_H_
  6.  
  7. #define PIX_ERR        -1
  8.  
  9. struct rasterfile {
  10.     int ras_magic;
  11. #define    RAS_MAGIC    0x59a66a95
  12.     int ras_width;
  13.     int ras_height;
  14.     int ras_depth;
  15.     int ras_length;
  16.     int ras_type;
  17. #define RT_OLD        0
  18. #define RT_STANDARD    1
  19. #define RT_BYTE_ENCODED    2
  20. #define RT_EXPERIMENTAL 0xffff
  21.     int ras_maptype;
  22. #define RMT_NONE    0
  23. #define RMT_EQUAL_RGB    1
  24. #define RMT_RAW        2
  25.     int ras_maplength;
  26.     };
  27.  
  28. struct pixrectops {
  29.     int    (*pro_rop)();
  30.     int    (*pro_stencil)();
  31.     int    (*pro_batchrop)();
  32.     int    (*pro_nop)();
  33.     int    (*pro_destroy)();
  34.     int    (*pro_get)();
  35.     int    (*pro_put)();
  36.     int    (*pro_vector)();
  37.     struct pixrect *(*pro_region)();
  38.     int    (*pro_putcolormap)();
  39.     int    (*pro_getcolormap)();
  40.     int    (*pro_putattributes)();
  41.     int    (*pro_getattributes)();
  42.     };
  43.  
  44. struct pr_size {
  45.     int x, y;
  46.     };
  47. struct pr_pos {
  48.     int x, y;
  49.     };
  50.  
  51. struct pixrect {
  52.     struct pixrectops *pr_ops;
  53.     struct pr_size pr_size;
  54.     int pr_depth;
  55.     struct mpr_data *pr_data;    /* work-alike only handles memory pixrects */
  56.     };
  57.  
  58. struct mpr_data {
  59.     int md_linebytes;
  60.     unsigned char *md_image;    /* note, byte not short -- avoid pr_flip() */
  61.     struct pr_pos md_offset;
  62.     short md_primary;
  63.     short md_flags;
  64.     };
  65.  
  66. typedef struct {
  67.     int type;
  68.     int length;
  69.     unsigned char *map[3];
  70.     } colormap_t;
  71.  
  72. /* And the routine definitions. */
  73.  
  74. struct pixrect *mem_create( /* int w, int h, int depth */ );
  75. void mem_free( /* struct pixrect *p */ );
  76.  
  77. int pr_dump( /* struct pixrect *p, FILE *out, colormap_t *colormap, int type, int copy_flag */ );
  78.  
  79. int pr_load_header( /* FILE *in, struct rasterfile *hP */ );
  80.  
  81. int pr_load_colormap( /* FILE *in, struct rasterfile *hP, colormap_t *colormap */ );
  82.  
  83. struct pixrect *pr_load_image( /* FILE *in, struct rasterfile *hP, colormap_t *colormap */ );
  84.  
  85. #endif /*_RAST_H_*/
  86.